Blockiness is one of the most noticeable artifacts introduced by block-based video and image coding. The reasons behind the blockiness is that the block-based coding uses a block (e.g. 8×8 or 4×4) as a basic unit, for transformation, quantization and texture coding, and the inter-block correlation, is lost during this coding. The problem is especially severe when video/image content is coded at very low bit rates (high quantization step size qp). For intra macroblocks (MBs), the blocking artifacts are visible only around block boundaries. However for inter MBs, the motion compensation may bring the artifacts inside the blocks. The blocking artifacts coming from the reference frames is termed “inherited blockiness” because the blockiness is inherited from previous frames. The inherited blockiness may be visible at any location and have any length.
There are two types of approaches to address the inherited blockiness issue. A first approach is to exploit long-tap filtering on all pixels in order to smooth out artifacts because the inherited blockiness may appear anywhere. The first approach employs the DC offset mode defined in the motion picture expert group (MPEG)-4 standard, in which a 9-tap filtering is applied on all eight neighboring pixels around a block edge. The second approach traces the moving trajectory of the blockiness and applies DB on the moved artifacts.
The second approach has been proved to be an effective tool to remove inherited blockiness, the MIPs requirement for deblocking a 30 frames per second (fps) VGA image is too high for mobile or wireless applications.
Using a H.264 hardware deblocker (DB) as a post-loop deblocker for MPEG-4 and Wireless Media Video 9 series (WMV9) is known. However, in the past, the post-loop deblocker only filters the pixels around 8×8 blocks, so the inherited blockiness still remains. Furthermore, the filtering strength, for skipped MBs and coded block pattern (CBP) 0 blocks, is not strong enough. The standard practice always sets BS for an inter MB as two or less (unless the neighboring MB is of intra).
There is therefore a need for techniques to universally correct blockiness, including inherited blockiness, with a low million instructions per second (MIPs).